#pragma once

#include "glare.core.Prerequisites.h"
#include "glare.core.PlatformWindow.h"

namespace Glare {

	class Win32WindowConstructionParams : public PlatformWindow::ConstructionParams
	{
	public : std::string Class;
	public : std::string Title;
	public : uint InstanceHandle;
	};

	class Win32Window : public PlatformWindow
	{
	public : Win32Window(const uint& width, const uint& height, ConstructionParams* params);
	public : virtual ~Win32Window();

	public : virtual const PlatformWindowType GetWindowType() const;

	public : virtual const uint GetCanvasWidth(const RenderWindow* render_window) const;
	public : virtual const uint GetCanvasHeight(const RenderWindow* render_window) const;

	public : const HWND& GetWindowHandle() const;

	private : static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

	private : HWND _hwnd;
	private : Win32WindowConstructionParams* _construction_params;
	};

}
